iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

一、winform
昨天提到,下拉選單比較常用到的方式是用List與類別搭配,這個就找一個例子說明:

            List<Part> parts = new List<Part>();
            parts.Add(new Part() { PartName = "1", PartId = 1 });
            parts.Add(new Part() { PartName = "2", PartId = 2 });
            parts.Add(new Part() { PartName = "3", PartId = 3 });
            parts.Add(new Part() { PartName = "4", PartId = 4 });
            parts.Add(new Part() { PartName = "5", PartId = 5 });

            foreach (Part aPart in parts)
            {
                comboBox1.Items.Add(aPart.PartName);
            }

這個程式執行的結果如下:https://ithelp.ithome.com.tw/upload/images/20230924/20163340OBbiKAfvgg.png

list新增的語法:
parts.Insert(parts.Count , new Part() { PartName = textBox1.Text, PartId = parts.Count + 1 });

list刪除的語法:
parts.RemoveAt(comboBox1.SelectedIndex);

combobox清除的語法:
comboBox1.Items.Clear();

combobox刷新的語法:
comboBox1.Refresh();

以下是完整的程式碼

  List<Part> parts = new List<Part>();

        public Form1()
        {
            InitializeComponent();
        }
        //載入
        private void Form1_Load_1(object sender, EventArgs e)
        {
            parts.Add(new Part() { PartName = "1", PartId = 1 });
            parts.Add(new Part() { PartName = "2", PartId = 2 });
            parts.Add(new Part() { PartName = "3", PartId = 3 });
            parts.Add(new Part() { PartName = "4", PartId = 4 });
            parts.Add(new Part() { PartName = "5", PartId = 5 });

            reloadComboBox();

        }
        //刪除
        private void button1_Click(object sender, EventArgs e)
        {
            parts.RemoveAt(comboBox1.SelectedIndex);
            reloadComboBox();
        }
        //新增
        private void button2_Click(object sender, EventArgs e)
        {
            parts.Insert(parts.Count , new Part() { PartName = textBox1.Text, PartId = parts.Count + 1 });
            reloadComboBox();
        }
        
        public void reloadComboBox()
        {
            comboBox1.Items.Clear();
            comboBox1.Refresh();
            foreach (Part aPart in parts)
            {
                comboBox1.Items.Add(aPart.PartName);
            }
        }

        public class Part
        {
            public string PartName { get; set; }
            public int PartId { get; set; }
        }

可以選取刪除、與新增,其他詳細的語法可以參考List.Remove(T) 方法連結
https://ithelp.ithome.com.tw/upload/images/20230924/20163340CSw00stUBp.png

二、webform
至於網頁版的寫法,也很類似,語法大致如下:
和上面的程式不同處在於if (!IsPostBack)的部份,並且下拉選單元件有建置postback,就能讀取DropDownList2.SelectedIndex的值並用來刪除該項目的值。

雖然現在的網頁比較不流行這個元件與寫法,但從這邊可以發現DropDownList與comboBox操作方式基本上相同,都可以用list接值。

List<Part> parts = new List<Part>();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                parts.Add(new Part() { PartName = "1", PartId = 1 });
                parts.Add(new Part() { PartName = "2", PartId = 2 });
                parts.Add(new Part() { PartName = "3", PartId = 3 });
                parts.Add(new Part() { PartName = "4", PartId = 4 });
                parts.Add(new Part() { PartName = "5", PartId = 5 });
                reloadComboBox();
            }
        }

        public void reloadComboBox()
        {
            DropDownList2.Items.Clear();
            foreach (Part aPart in parts)
            {
                DropDownList2.Items.Add(aPart.PartName);
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            parts.Insert(parts.Count, new Part() { PartName = TextBox1.Text, PartId = parts.Count + 1 });
            reloadComboBox();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            parts.RemoveAt(DropDownList2.SelectedIndex);
            reloadComboBox();
        }

        public class Part
        {
            public string PartName { get; set; }
            public int PartId { get; set; }
        }

三、類別
以上的範別都有用到類別,類別是物件導向的一個重要概念,
這個範例的list的類別只有單層,PartName是文字,PartId是項目值,
用List parts = new List();宣告動態元件
再用該元件進行新增或刪除等操作

物件導向中的類別搭配list是很常用得到的寫法,在java也有類似的東西,因此可以稍微記一下
以上就先介紹到這邊

        public class Part
        {
            public string PartName { get; set; }
            public int PartId { get; set; }
        }

上一篇
DropDownList(asp.net webform元件)、ComboBox(winform元件)
下一篇
CheckBox、RadioButton
系列文
研究visual studio+MSSQL各項技術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言